"""
@name : 5.多态
@author : wenyao
@projectname: sanchuanglianxi
"""
##python里面不支持多态，python处处是多态。
#python本身就是一种多态语言。

#1、python  java
# def func1(name):
#     print(name)
#
# func1("wen")
# func1(123)
# func1([1,2,3])

#java指定变量类型
#def func1(int/str/list name)

# class A:
#     def func1(self):
#         print("this is A")
#
# class B(A):
#     def func1(self):
#         print("this is B")
#
# class C(A):
#     def func1(self):
#         print("this is C")
#
# def func2(obj):
#     obj.func1()
# # def func2(A a):
# #      a.func1()
#
# #len(str,list,tuple)
# class D:
#     def func1(self):
#         print("this is D")
# a_obj = A()
# b_obj = B()
# c_obj = C()
# d_obj = D()
# func2(a_obj)
# func2(b_obj)
# func2(c_obj)
# func2(d_obj)


class Animal:
    def __init__(self):
        print("I am Animal")

class Cat(Animal):
    def __init__(self):
        print("I am Cat")

class Dog(Animal):
    def __init__(self):
        print("I AM dog")

animal = Animal()
cat = Cat()
dog = Dog()

print(isinstance(cat, Cat))
print(isinstance(cat, Animal))
#cat 不仅是Cat类型，还是Animal类型 这就是变量一种多态
#对于相同名称的__init__函数，输出的结果是不一样的 这就是函数的多态
#鸭子类型：看起来像鸭子，走起来像鸭子，那就是鸭子
#关注的是行为，而不是类本身的类型。

